/**
 * 
 */
package co.com.ebusiness.trader.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.apache.tapestry5.beaneditor.NonVisual;
import org.apache.tapestry5.beaneditor.Validate;
import org.hibernate.annotations.OnDelete;

/**
 * @author Luis Agudelo
 *
 */
@Entity
@Table(name = "trd_detallesinventario")
@Inheritance(strategy = InheritanceType.JOINED)
public class DetalleInventario {
	
	private int idDet;
	private int cantidad;
	private String observacion;
	private Date fecha = new Date();
	private Precio precio;
	private Inventario inventario;
	
	
	/**
	 * @return the idDet
	 */
	@Id
    @GeneratedValue
    @Column(name = "idDet")
    @NonVisual
	public int getIdDet() {
		return idDet;
	}
	/**
	 * @param idDet the idDet to set
	 */
	public void setIdDet(int idDet) {
		this.idDet = idDet;
	}
	/**
	 * @return the cantidad
	 */
	@Validate("required")
	public int getCantidad() {
		return cantidad;
	}
	/**
	 * @param cantidad the cantidad to set
	 */
	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}
	
	/**
	 * @return the observacion
	 */
	public String getObservacion() {
		return observacion;
	}
	/**
	 * @param observacion the observacion to set
	 */
	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}
	/**
	 * @return the fecha
	 */
	@Validate("required")
	public Date getFecha() {
		return fecha;
	}
	/**
	 * @param fecha the fecha to set
	 */
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	/**
	 * @return the precio
	 */
	@Validate("required")
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idPrec")
	public Precio getPrecio() {
		return precio;
	}
	/**
	 * @param precio the precio to set
	 */
	public void setPrecio(Precio precio) {
		this.precio = precio;
	}
	/**
	 * @return the inventario
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE)
	@JoinColumn(name="idInv")
	public Inventario getInventario() {
		return inventario;
	}
	/**
	 * @param inventario the inventario to set
	 */
	public void setInventario(Inventario inventario) {
		this.inventario = inventario;
	}
	
}
